package com.zkthink.clh.order.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 实体类
 * 车惠龙订单表
 * </p>
 *
 * @author chenke
 * @since 2022-04-24
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Builder
@ApiModel(value = "ChlOrderSaveDTO", description = "车惠龙订单表")
public class ChlOrderSaveDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 会员id
     */
    @ApiModelProperty(value = "会员id")
    private Long mid;
    /**
     * 订单编号
     */
    @ApiModelProperty(value = "订单编号")
    @Length(max = 32, message = "订单编号长度不能超过32")
    private String orderCode;
    /**
     * 订单状态：1-待付款 2-已付款 3-付款失败
     */
    @ApiModelProperty(value = "订单状态：1-待付款 2-已付款 3-付款失败")
    @NotNull(message = "订单状态：1-待付款 2-已付款 3-付款失败不能为空")
    private Integer orderStatus;
    /**
     * 订单类型 1-充值vip 2-购买店铺 3-购买消费金
     */
    @ApiModelProperty(value = "订单类型 1-充值vip 2-购买店铺 3-购买消费金")
    private Integer orderType;
    /**
     * 下单账户
     */
    @ApiModelProperty(value = "下单账户")
    @Length(max = 255, message = "下单账户长度不能超过255")
    private String memberAccount;
    /**
     * 订单金额
     */
    @ApiModelProperty(value = "订单金额")
    @NotNull(message = "订单金额不能为空")
    private BigDecimal orderSum;
    /**
     * 支付金额
     */
    @ApiModelProperty(value = "支付金额")
    @NotNull(message = "支付金额不能为空")
    private BigDecimal paySum;
    /**
     * 下单时的备注
     */
    @ApiModelProperty(value = "下单时的备注")
    @Length(max = 65535, message = "下单时的备注长度不能超过65,535")
    private String notes;
    /**
     * 预支付id
     */
    @ApiModelProperty(value = "预支付id")
    @Length(max = 65535, message = "预支付id长度不能超过65,535")
    private String prepayId;
    /**
     * 付款时间
     */
    @ApiModelProperty(value = "付款时间")
    private LocalDateTime payTime;
    /**
     * 支付方式 1-微信支付 2-支付宝支付
     */
    @ApiModelProperty(value = "支付方式 1-微信支付 2-支付宝支付")
    @NotNull(message = "支付方式 1-微信支付 2-支付宝支付不能为空")
    private Integer payChannel;
    /**
     * 支付单号
     */
    @ApiModelProperty(value = "支付单号")
    @Length(max = 128, message = "支付单号长度不能超过128")
    private String payNum;
    /**
     * 逻辑删除 1-删除 0-未删除
     */
    @ApiModelProperty(value = "逻辑删除 1-删除 0-未删除")
    @NotNull(message = "逻辑删除 1-删除 0-未删除不能为空")
    private Integer isDelete;
    /**
     * 是否已存在发票
     */
    @ApiModelProperty(value = "是否已存在发票")
    private Integer isInvoice;
    /**
     * 当订单类型为1时,充值vip类型的id
     */
    @ApiModelProperty(value = "当订单类型为1时,充值vip类型的id")
    private Long productId;
    /**
     * 当订单类型为2时,购买小红心的个数
     */
    @ApiModelProperty(value = "当订单类型为2时,购买小红心的个数")
    private BigDecimal loveNum;

}
